package com.spring.service;

import com.spring.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService{
    // 注入 dao，@Autowired是根据类型找到对象进行注入（byType），自动装配，代替了xml里bean标签里赋值的操作

    // 第一种，属性 进行注入
    @Autowired
    @Qualifier(value = "userRedisDaoImpl") // 由于UserDao类型有两个实现类，而@Autowired是byType，这样就不知道选哪个了，所以配合@Qualifier注解一起使用来指定（byName）
    private UserDao userDao;

    public void add() {
        userDao.add();
        System.out.println("service....");
    }

    /*
        第二种，set方法 进行注入
        private UserDao userDao;

        @Autowired
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
     */

    /*
        第三种，构造方法 进行注入
        private UserDao userDao;

        @Autowired
        public UserServiceImpl(UserDao userDao) {
            this.userDao = userDao;
        }
     */

    /*
        第四种，形参 进行注入
        private UserDao userDao;

        public UserServiceImpl(@Autowired UserDao userDao) {
            this.userDao = userDao;
        }
     */

    /*
        第五种，无注解 进行注入，前提：有且只有一个有参构造函数，多个无参都不行
        private UserDao userDao;

        public UserServiceImpl(UserDao userDao) {
            this.userDao = userDao;
        }
     */

}
